// 引入封装好的es7的async语法
import {
  getSetting,
  chooseAddress,
  openSetting,
  showModal,
  showToast,
  requestPayment
} from "../../utils/async.js";
import regeneratorRuntime from '../../lib/runtime/runtime'
import {
  request
} from "../../request/index.js";
Page({
  data: {
    address: {},
    cart: [],
    totalPrice: 0,
    totalNum: 0
  },
  onShow() {
    // 获取缓存中的收货地址
    const address = wx.getStorageSync('address')
    // 获取缓存中的购物车数据
    let cart = wx.getStorageSync('cart') || []
    // 过滤后的购物车数组(找出被选中的商品)
    cart = cart.filter(v => v.checked)
    this.setData({
      address
    })

    // 重新计算价格
    let totalPrice = 0
    let totalNum = 0
    cart.forEach(element => {
      totalPrice += element.num * element.goods_price
      totalNum += element.num
    });
    // 5.把购物车数据重新设置回data中和缓存中
    this.setData({
      cart,
      totalPrice,
      totalNum,
      address
    })
  },
  // 支付按钮的回调
  async handleOrderPay() {
    try {
      // 1.判断缓存中有没有token
      const token = wx.getStorageSync('token')
      // 2.判断
      if (!token) {
        wx.navigateTo({
          url: '/pages/auth/index',
        })
        return
      }
      console.log("已经存在token了");
      // 3.创建订单
      // 3.1准备  请求头参数
      // const header = {
      //   Authorization: token
      // }
      // 3.2准备请求体参数
      const order_price = this.data.totalPrice
      const consignee_addr = this.data.address.all
      const cart = this.data.cart
      let goods = []
      cart.forEach(v => goods.push({
        goods_id: v.goods_id, 
        goods_number: v.num,
        goods_price: v.goods_price
      }))
      // 4.发送请求  创建订单  获取订单号
      const orderParams = {
        order_price,
        consignee_addr,
        goods
      }
      const {
        order_number
      } = await request({
        url: '/my/orders/create',
        method: 'post',
        data: orderParams
      })
      // 5.发起预支付的接口
      const {
        pay
      } = await request({
        url: '/my/orders/req_unifiedorder',
        method: 'post',
        data: {
          order_number
        }
      })
      // 6.发起微信支付
      await requestPayment(pay)
      // 7.获取后台 订单状态
       await request({
        url: '/my/orders/chkOrder',
        method: 'post',
        data: {
          order_number
        }
      })
      await showToast({
        title: "支付成功"
      })
      // 8.手动删除缓存中，已经支付了的商品(这里是没有过滤掉的商品) 把没有选中的商品重新存到缓存中
      let newCart = wx.getStorageSync('cart')
      newCart = newCart.filter(v => !v.checked)
      wx.setStorageSync('cart', newCart)
      // 9.成功了，跳转到订单页面
      wx.navigateTo({
        url: '/pages/order/index',
      })
    } catch (error) {
      await showToast({
        title: "支付失败"
      })
      // 8.手动删除缓存中，已经支付了的商品(这里是没有过滤掉的商品) 把没有选中的商品重新存到缓存中
      let newCart = wx.getStorageSync('cart')
      newCart = newCart.filter(v => !v.checked)
      wx.setStorageSync('cart', newCart)
      // 9.假装支付成功
      wx.navigateTo({
        url: '/pages/order/index',
      })
    }
  }
})